Semantik Web  •  Hafta 04

OWL Temelleri

Class, Property, Individual, Axiom; OWL Lite / DL / Full, OWL 2 profilleri ve Protégé ile ilk ontoloji

Lisansüstü Semantik Web Dersi  •  CMPE 583

Hafta 04  •  Kazanımlar

Bu hafta sonunda

  • OWL'un dört yapı taşını ve aksiyom türlerini kullanabileceksiniz.
  • OWL Lite / DL / Full ile OWL 2 profillerini örneklerle ayırt edebileceksiniz.
  • Özellik karakteristiklerini (functional, inverse, transitive) uygulayabileceksiniz.
  • Protégé'de sıfırdan bir ontoloji kurup reasoner çalıştırabileceksiniz.
  • Alerji ontolojisinin her satırını okuyup gerekçelendirebileceksiniz.

01

Ödev 3'ün Çözümü

Turtle grafı, RDFS çıkarımları ve zincirleme SPARQL.

Çözüm 3.1 — Beklenen Turtle

:TC_005 a :Person ; :hasAge "16"^^xsd:int ; :hasAllergy :Gluten ; :ChooseProduct :EAN_00001 .
Çıkarım: :EAN_00001 a :Product (domain) :Alginic_Acid a :FoodAdditives (range) Risk zinciri KAPANIR: Gluten ← Alginic_Acid ← EAN_00001 Adult DEĞİL (16 < 18)

Tipsiz "16" yazılırsa S5 kuralı sessizce sonuç üretmez — en sık kaybedilen puan.

Çözüm 3.2 — Zincirleme sorgu

SELECT ?ad ?katki WHERE { ?p :hasName ?ad ; :hasAllergy ?a ; :ChooseProduct ?u . ?u :Contain ?katki . ?katki :Triggers ?a . }
Sık hataSonucu
?a yerine sabit :LactoseDiğer alerjiler görünmez
:Triggers yönünün ters yazımıBoş sonuç
PREFIX eksikliğiAyrıştırma hatası

02

OWL Nedir?

Tanımlama mantığı temelli ontoloji dili.

OWL: Web Ontology Language

  • W3C standardı; temeli tanımlama mantığı (description logic).
  • Sınıfları yalnızca adlandırmakla kalmaz, tanımlar: koşullarla ifade eder.
  • Karar verilebilirlik korunur: reasoner sonlu zamanda cevap verir.
  • Projede OWL, veriyi değil modelin kurallarını taşır.

RDFS'ten OWL'a: ne kazanıyoruz?

YetenekRDFSOWL
Ayrık sınıflar—owl:disjointWith
Denk sınıflar—owl:equivalentClass
Kısıtlar—Restriction
Sayı kısıtı—Cardinality
Özellik karakteristiği—functional, inverse, transitive
Birey özdeşliği—sameAs / differentFrom

Dört yapı taşı

KavramAlerji projesiİkinci örnek (üniversite)
ClassPerson, Product, AllergyStudent, Course, Instructor
Object PropertyContain, TriggersenrolledIn, teaches
Datatype PropertyhasAge, hasBMIhasCredit, hasGPA
IndividualNisin, TC_001CMPE583, Ali
AxiomAdult ⊑ PersonStudent ⊓ Instructor = ∅

Aksiyom türleri: TBox, RBox, ABox

TBox — sınıflar

Adult ⊑ Person

Terminoloji: kavram tanımları

RBox — özellikler

Lactose_Allergen ⊑ Effected_Allergen

Rol hiyerarşisi ve karakteristikler

ABox — bireyler

Product(EAN_00004)

Olgular: veri

Projede TBox küçük, ABox orta, RBox ise alt özellik hiyerarşisiyle şaşırtıcı biçimde etkilidir.

03

OWL Türleri ve Sürümleri

Lite, DL, Full ve OWL 2 profilleri — hangisi neden?

OWL 1: Lite, DL, Full

Türİfade gücüKarar verilebilir?Kullanım
OWL LiteSınırlı: hiyerarşi, basit kısıtEvet, hızlıBasit taksonomiler
OWL DLYüksek, mantıksal sınırlar içindeEvetProjemiz burada
OWL FullEn yüksek, RDF ile tam uyumHayırMeta-modelleme

DL seçimi bir mühendislik kararıdır: HermiT ve Pellet ancak DL sınırları içinde garantili sonuç verir.

Farkında olmadan OWL Full'a düşmek

Hatalı

:Lactose a owl:Class ; a :Allergy . # hem sınıf hem birey!

Doğru (projede)

:Allergy a owl:Class . :Lactose a :Allergy .

Bir kaynağı hem sınıf hem birey yapmak (punning) OWL DL'i terk etmektir; reasoner uyarı verir veya sonucu garanti etmez.

OWL 2 profilleri

ProfilGüçlü yanıTipik alan
OWL 2 ELÇok büyük taksonomilerde hızlı sınıflandırmaSNOMED CT, tıbbi terminoloji
OWL 2 QLVeritabanı üstünde sorgu yazımı (OBDA)Kurumsal veri erişimi
OWL 2 RLKural motorlarıyla ölçeklenirKurumsal kural sistemleri
OWL 2 DLTam ifade gücüAlerji projesi

Profil seçimi = ifade gücü ile hız arasında bilinçli takas.

OWL 2 neler ekledi?

YenilikAlerji örneği
Nitelikli sayı kısıtıEn az 2 FoodAdditives içeren ürün
Özellik zinciriContain ∘ Triggers ⊑ mayTrigger
Ayrık birleşimPerson / Product / Allergy tek aksiyomda ayrık
Veri aralıklarıBMI için double[>= 30.0]
Anahtarlar (HasKey)Barkod, ürünü tekil belirler

Özellik zinciri, S6 kuralının bir kısmını SWRL'siz ifade etmemizi sağlar — Hafta 05'te deneyeceğiz.

Aynı aksiyom, dört sözdizimi

ManchesterAdult SubClassOf Person
FunctionalSubClassOf(:Adult :Person)
Turtle:Adult rdfs:subClassOf :Person .
RDF/XML<owl:Class rdf:about="#Adult"> <rdfs:subClassOf rdf:resource="#Person"/> </owl:Class>

Protégé arayüzünde Manchester, dosyada RDF/XML görürsünüz. Aynı aksiyom.

04

Sınıflar ve Aksiyomlar

Hiyerarşi, ayrıklık, denklik ve tanımlı sınıflar.

Sınıf bildirimi

<owl:Class rdf:about="#Person"/> <owl:Class rdf:about="#Product"/> <owl:Class rdf:about="#FoodAdditives"/> <owl:Class rdf:about="#Allergy"/>
<owl:Class rdf:about="#Adult"> <rdfs:subClassOf rdf:resource="#Person"/> </owl:Class> <owl:Class rdf:about="#PersonAtRisk"> <rdfs:subClassOf rdf:resource="#Person"/> </owl:Class>

Dört üst sınıf birbirinden bağımsızdır; iki alt sınıf yalnızca Person altındadır.

Ayrık sınıflar: modelin bekçisi

<owl:AllDisjointClasses> <owl:members rdf:parseType="Collection"> <rdf:Description rdf:about="#Person"/> <rdf:Description rdf:about="#Product"/> <rdf:Description rdf:about="#FoodAdditives"/> <rdf:Description rdf:about="#Allergy"/> </owl:members> </owl:AllDisjointClasses>

Bu tek aksiyom sayesinde :TC_009 :Contain :Nisin gibi bir hata tutarsızlık olarak yakalanır: kişi aynı anda ürün olamaz.

Denk sınıf: tanımlı (defined) sınıflar

# Manchester RiskyProduct EquivalentTo Product and (Contain some (Triggers some Allergy))

Gerekli ve yeterli koşul: bu tanımı sağlayan her ürün otomatik olarak sınıfa girer.

Reasoner sonrası: RiskyProduct = {EAN_00001, EAN_00002, EAN_00003, EAN_00004}

Fark: subClassOf yalnızca gerekli koşuldur — üyelik çıkarılmaz.

Sınıf ifadeleri: kesişim, birleşim, tümleyen

İfadeManchesterAlerji örneği
Kesişim (⊓)andPerson and (hasAllergy some Allergy)
Birleşim (⊔)orLactose or Egg alerjisi
Tümleyen (¬)notnot (hasAllergy some Allergy)
Sıralı küme{ … }{Lactose, Egg, Fish, Gluten}

Tümleyen ile "alerjisi olmayan" yazılabilir; ama açık dünyada bu sınıf, bilinen alerjisi olmayanları değil, alerjisi olmadığı kanıtlanmış olanları içerir.

05

Özellikler

Nesne ve veri özellikleri, karakteristikler.

Nesne özellikleri

ÖzellikDomain → RangeRolü
ChooseProductPerson → ProductTüketim tercihi
ContainProduct → FoodAdditivesEtiket bilgisi
TriggersFoodAdditives → AllergyTıbbi bilgi
hasAllergyPerson → AllergyHasta profili
Effected_AllergenPerson → FoodAdditivesÇıkarım sonucu

İlk dördü bildirilir, beşincisi üretilir. Bir ontolojide hangi özelliğin veri hangisinin sonuç olduğunu bilmek tasarımın özüdür.

Veri özellikleri

<owl:DatatypeProperty rdf:about="#hasAge"> <rdfs:domain rdf:resource="#Person"/> <rdfs:range rdf:resource="&xsd;int"/> </owl:DatatypeProperty>
ÖzellikTip
hasNamestring
hasAgeint
hasWeight / hasHeightdouble
hasBMIdouble (çıkarım)

Özellik karakteristikleri

KarakteristikAnlamıÖrnek
FunctionalEn çok bir değerhasBMI, hasBirthDate
Inverse functionalDeğer özneyi belirlerhasBarcode
TransitiveZincir taşınırhasIngredientPart
Symmetricİki yönlücrossReactsWith
AsymmetricTers asla doğru değilContain
IrreflexiveKendisiyle ilişkilenmezTriggers

Functional: sessiz ama güçlü

hasBMI Functional :TC_001 :hasBMI 23.92 . :TC_001 :hasBMI 24.10 .
Sonuç: TUTARSIZ (iki farklı sayı aynı olamaz) Nesne özelliği olsaydı: sameAs çıkarımı yapılırdı.

Bu yüzden BMI'yi functional yapmak, kural motorunun iki kez farklı değer yazmasını hata olarak ortaya çıkarır — istenen davranıştır.

Ters özellik ve özellik zinciri

Inverse

containedIn InverseOf Contain :Nisin :containedIn :EAN_00004 (çıkarıldı)

Zincir (OWL 2)

mayTrigger SubPropertyChain Contain o Triggers :EAN_00004 :mayTrigger :Lactose (çıkarıldı)

Zincir sayesinde "bu ürün hangi alerjileri tetikleyebilir?" sorusu SWRL'siz cevaplanır. Kişi profilini işe katmak ise hâlâ kural gerektirir.

Bireyler ve özdeşlik

<owl:NamedIndividual rdf:about="#Nisin"> <rdf:type rdf:resource="#FoodAdditives"/> <Triggers rdf:resource="#Lactose"/> </owl:NamedIndividual>
:Nisin owl:sameAs :E234 . :Nisin owl:differentFrom :Casein .

E kodları ile ticari adları sameAs ile bağlamak, farklı market kataloglarını birleştirmenin yoludur.

06

Protégé ile İlk Ontoloji

Sıfırdan kurulum: IRI, sınıf, özellik, birey, reasoner.

Protégé'de ontoloji yaratma: sekiz adım

#İşlemNerede
1Yeni ontoloji, IRI belirleFile → New
2Sınıfları ekleEntities → Classes
3Ayrıklık bildirDisjoint With
4Nesne özellikleri, domain/rangeObject properties
5Veri özellikleriData properties
6Bireyleri ekleIndividuals
7Reasoner çalıştırReasoner → HermiT → Start
8RDF/XML olarak kaydetFile → Save as

Adım 1 — Ontoloji IRI'si

Active ontologyEntitiesIndividuals by class
Ontology IRIhttp://EMU/AllergyOntology
Ontology Version IRIhttp://EMU/AllergyOntology/1.1
Annotationsrdfs:comment "Gıda alerjisi karar destek ontolojisi"@tr

Şematik gösterim. IRI sonradan değiştirilirse tüm yerel adlar taşınır — baştan doğru seçin.

Adım 2–3 — Sınıflar ve ayrıklık

Active ontologyEntitiesSWRLTab
Class hierarchy ▾ owl:Thing Person Product FoodAdditives Allergy
Description: Person SubClass Of   owl:Thing Disjoint With   Product, FoodAdditives, Allergy

Ayrıklığı en baştan bildirin: sonradan eklenen ayrıklık, biriken hatalı bireyleri anında tutarsız yapar.

Adım 4 — Nesne özelliği ve domain/range

Object propertiesData properties
Property hierarchy ▾ owl:topObjectProperty ChooseProduct Contain ▾ Effected_Allergen Lactose_Allergen Fish_Allergen
Characteristics ☐ Functional   ☐ Transitive   ☑ Asymmetric Domains / Ranges Domain: Person  ·  Range: FoodAdditives

Adım 6 — Birey ve bildirimler

EntitiesIndividuals by class
EAN_00004 — Types Product Object property assertions Contain  Ascorbic_Acid  ·  Contain  Nisin  ·  Contain  Soy_Lecitin Data property assertions hasProductName "Eti Chocolate"

Birey adı = barkod; okunur ad ise veri özelliğidir. Bu ayrım, çok dilli katalogda kritik olur.

Adım 7 — Reasoner'ı çalıştırmak

Menüİşi
Reasoner → HermiTMotoru seç
Start reasonerÇıkarımı başlat
SynchroniseDeğişiklik sonrası yenile
Explain inconsistencyÇelişkinin gerekçesi

Okuma ipucu

Protégé çıkarılan bildirimleri farklı renkte gösterir. Sarı zeminli satır = reasoner'ın ürettiği bilgi; dosyaya yazılmaz.

Adım 8 — Hangi biçimde kaydetmeli?

BiçimAvantajProjede
RDF/XMLEn yaygın, araç desteği tamKullandığımız
Turtleİnsan tarafından okunurDerste örnekler
OWL/XMLŞemaya dayalı doğrulama—
FunctionalStandart metinde kullanılırAkademik yazım
OBO / ManchesterAlan toplulukları—

SWRL kuralları RDF/XML'de swrl:Imp aksiyomları olarak saklanır — biçim değiştirirken kural kaybını kontrol edin.

İlk ontolojide beş sık hata

HataBelirtisiÇözüm
Somut nesneyi sınıf yapmakNisin adlı boş sınıfBirey olarak ekle
Ayrıklık bildirmemekReasoner hata bulmuyorDisjoint ekle
Literal tipini boş bırakmakKural sonuç üretmiyorxsd tipini seç
Domain'i kısıt sanmakBeklenmeyen tip çıkarımıKısıt için Restriction kullan
IRI'yi sonradan değiştirmekKurallar kırılıyorBaştan sabitle

İkinci örnek: üniversite ontolojisi

Student ⊑ Person Instructor ⊑ Person Student ⊓ Instructor ⊑ ⊥ enrolledIn: Student → Course teaches: Instructor → Course hasCredit: Course → xsd:int
GraduateCourse EquivalentTo Course and (hasCredit some int[>= 500]) :CMPE583 a Course ; :hasCredit 583 . → GraduateCourse (çıkarıldı)

Aynı üç yapı: ayrık sınıflar, domain/range, tanımlı sınıf. Alan değişir, kalıp değişmez.

Üçüncü örnek: menü ontolojisi

VegetarianDish EquivalentTo Dish and (hasIngredient only (not MeatProduct))

only (allValuesFrom) evrensel kısıttır: bütün malzemeler et dışı olmalı.

Tuzak: malzemeleri kapatmadıysanız (closure), açık dünya gereği hiçbir yemek vejetaryen çıkarılmaz.

Aynı tuzak alerji projesinde "güvenli ürün" tanımında karşımıza çıkacak — Hafta 05.

07

Ödev ve Proje Adımı

Protégé'de kendi ontolojinizi kurun.

Ödev 4 — Protégé'de ontoloji

  1. Kendi alanınız için 6 sınıf, 5 nesne, 3 veri özelliği tanımlayın.
  2. Üst sınıfları ayrık bildirin; en az bir alt özellik hiyerarşisi kurun.
  3. En az 12 birey ekleyin, bildirimlerini tamamlayın.
  4. Bir tanımlı (equivalentClass) sınıf yazın ve çıkarımını gösterin.
  5. HermiT ile tutarlılığı doğrulayın; bir çelişki üretip explain ekranını raporlayın.

Teslim

.owl dosyası (RDF/XML) + 3 sayfa rapor: aksiyom listesi, çıkarım ekran görüntüleri, çelişki analizi.

Çözümü Hafta 05'in başında ele alacağız.

Değerlendirme ölçütleri

ÖlçütAğırlıkBeklenen
Sınıf ve hiyerarşi20%Ayrıklık doğru bildirilmiş
Özellik tasarımı25%Domain/range + karakteristikler
Bireyler15%Tipli literaller
Tanımlı sınıf25%Çıkarım kanıtlanmış
Çelişki analizi15%Gerekçe doğru okunmuş

Kaynaklar

  • W3C — OWL 2 Web Ontology Language Primer; Structural Specification.
  • W3C — OWL 2 Profiles (EL, QL, RL).
  • Horridge, M. — A Practical Guide To Building OWL Ontologies Using Protégé 5.
  • Baader, Calvanese, McGuinness et al. — The Description Logic Handbook.
  • Hitzler, Krötzsch, Rudolph — Foundations of Semantic Web Technologies, Böl. 4–5.

Özet  •  1 / 2

Dil ve yapı

  • OWL, sınıfları adlandırmakla kalmaz; koşullarla tanımlar.
  • TBox / RBox / ABox ayrımı, hangi bilginin nerede durduğunu söyler.
  • OWL DL karar verilebilirliği korur; punning OWL Full'a düşürür.
  • OWL 2 profilleri ifade gücü ile ölçek arasında takas sunar.

Özet  •  2 / 2

Projede ve sonraki adım

  • Dört ayrık üst sınıf modelin bekçisidir.
  • Alerjen alt özellikleri kuralları kısaltır.
  • hasBMI functional: çift değer hatayı görünür kılar.
  • Protégé'de sekiz adım: IRI'den kayda.

Hafta 05'te

OWL ileri konular: someValuesFrom / allValuesFrom, cardinality, karmaşık sınıf tanımları ve Protégé uygulamaları.

Ayrıca: Ödev 4'ün ayrıntılı çözümü.

Tekrar Soruları

Kendinizi sınayın

  1. subClassOf ile equivalentClass arasındaki çıkarım farkı nedir?
  2. Punning neden OWL DL'i terk eder?
  3. hasBMI functional olmasa ne olurdu?
  4. Özellik zinciri hangi SWRL kuralının yerini alabilir?
  1. OWL 2 EL hangi durumda DL'e tercih edilir?
  2. Ayrıklık bildirimi olmadan hangi hata sessiz kalır?
  3. "Alerjisi olmayan kişi" sınıfı açık dünyada neden boş kalır?
  4. Aynı aksiyomu Manchester ve RDF/XML ile yazın.

Alıştırma  •  Sınıf içi

Tanımlı sınıf yazın

"Laktoz alerjisi olan ve laktoz tetikleyici katkı içeren bir ürün seçen kişi" sınıfını Manchester sözdizimi ile tanımlayın.

LactoseRiskPerson EquivalentTo Person and (hasAllergy value ______) and (ChooseProduct some (Contain some ______))

Sorular

  1. Hangi bireyler bu sınıfa girer?
  2. Bu tanım S6+S7 kurallarının yerini tutar mı?
  3. Neden hâlâ SWRL'e ihtiyaç var?

Çözüm Hafta 05'te.